Doom e Texture mapping su Amiga
di Vincenzo Morra
Una delle prime cose che tenteremo di fare è spiegare il fenomeno Doom. Nato come prodotto shareware è riuscito, in pochissimo tempo, a conquistarsi le simpatie di migliaia di videogiocatori, al punto che la ID ne ha dovuto realizzare una versione commerciale e, a distanza di un anno, il relativo seguito.
Ma cos'è Doom e cosa spinge gli utenti PC a trascurare affetti e lavoro per dedicarsi alla soluzione di questo gioco?
Doom, in realtà, è un normalissimo arcade di labirinti (un PacMan con vista prospettica in prima persona) il cui scopo principale è eliminare tutti i nemici e trovare le varie uscite e porte segrete, attivando eventuali switch o utilizzando le relative chiavi. Il grande fascino di Doom è dovuto al fatto che, nel momento in cui inizia il gioco, si ha la sensazione di trovarsi realmente all'interno di un mondo virtuale, grazie al tipo di prospettiva utilizzato (soggettiva) e alla possibilità di giocare a tutto schermo. Ma la vera natura del gioco, l'elemento più divertente, è la possibilità di "splatterizzare" i vari nemici utilizzando una delle otto armi disponibili. Fucili a canne mozze, pistole, mitragliatrici e motosega sono solo alcune delle armi che troverete durante il gioco. Ogni qualvolta colpirete un nemico lo ridurrete ad un ammasso di budella e sangue, e se questo può sembrare eccessivo, sappiate che è il motivo principale per il quale si gioca a Doom. Nonostante le polemiche per l'alto tasso di violenza presente in questo gioco, il successo è stato enorme.
Noi di Enigma siamo del parere che i videogiochi non possono certo istigare alla violenza ma, in realtà, potrebbero essere una valvola di sfogo per tutti quelli che sono vittime dello stress quotidiano. Considerate una giornata tipo della vostra vita: vi svegliate la mattina con vostra moglie che ha una leggera somiglianza con la signora Pina Fantozzi, la vostra cara figlioletta vi rovescia addosso il caffè bollente, la vostra auto in panne vi abbandona per strada, il vostro capufficio vi redarguisce pubblicamente per il ritardo e vi sommerge di lavoro ed infine, come se non bastasse, vi rapinano sulla strada del ritorno. A questo punto, se non vi siete suicidati o se non avete commesso un omicidio di massa, l'unica cosa che vi resta da fare e caricare Doom e "blasterizzare" tutto ciò che si muove sullo schermo. Ovviamente, abbiamo volutamente esasperato la storia, giusto per chiarirvi le idee, anche se la realtà, a volte, non è poi così diversa. La cosa importante è non esagerare, dedicare il giusto tempo al gioco senza permettere che diventi un'ossessione.
Doom su Amiga è impossibile?
Le affermazioni della ID Software furono accolte come una sfida da buona parte dei programmatori Amiga. Era effettivamente impossibile realizzare Doom su Amiga o si trattava di superficialità da parte della ID? Il problema principale di Doom è il tipo di grafica utilizzata. Si tratta di ambientazioni tridimensionali (a 256 colori) con tanto di texture mapping applicate su pareti, soffitti e pavimenti, che richiedono un enorme mole di calcoli per la CPU. Per giocare Doom al massimo delle potenzialità (a tutto schermo e dettaglio elevato) occorre una configurazione hardware di tutto rispetto: 486 DX2 66 Mhz, scheda video veloce, scheda audio e 4 Mb di ram. Ad onor del vero, è possibile giocare con un 386 DX 40 Mhz riducendo il dettaglio e le dimensioni della finestra ma, in questo caso, si perde la sensazione del gioco in prima persona.
Considerando che un Amiga 1200 di base dispone di un processore 68EC020 a 14 Mhz con 2 Mb di ram e tenendo presente che la gestione della grafica su PC è di tipo chunky mentre su Amiga è di tipo bitplane, si può comprendere perché una conversione risulti troppo complessa.
Ma perché la grafica chunky su PC è più veloce di quella planar su Amiga? Senza affrontare una discussione troppo tecnica, possiamo dire che su Amiga, per aggiornare un singolo pixel (in modalità 256 colori) bisogna effettuare otto accessi alla memoria per ogni bitplane, mentre su PC basta una singola scrittura al byte del pixel da modificare. Si comprende, quindi, che Amiga deve effettuare un maggior numero di calcoli rispetto ad un PC per ottenere lo stesso scopo.
I primi esperimenti effettuati da alcuni programmatori Amiga, erano stati quelli di realizzare routine di conversione chunky to planar abbastanza veloci, da permettere la realizzazione di un "motore" per la gestione di labirinti tridimensionali con texture mapping. E' così che nasce una serie di mini cloni di Doom che tentano di avvicinarsi al gioco della ID ma con tutti i limiti del caso: minore velocità, basso livello di dettaglio grafico, mancanza di soffitti e pavimenti ed assenza di armi e nemici da uccidere.
Chunky Copper o Chunky to Planar?
Dicevamo prima della difficoltà di gestione della grafica chunky su Amiga, difficoltà che ha spinto i programmatori più determinati a trovare algoritmi e tecniche alternative per sfruttare al massimo l'hardware.
Le tecniche più raffinate, ma allo stesso tempo più dispendiose in termini di potenza di calcolo, sono quelle che effettuano una conversione "al volo" chunky to planar. In pratica, dal punto di vista software, il programmatore gestisce la grafica in modo chunky, poi un'apposita routine di conversione si occupa della trasformazione in bitplane della parte di schermo disegnata. Così è possibile realizzare animazioni fluide e molto dettagliate, ma al prezzo di possedere una più che buona configurazione hardware.
Con questa tecnica, infatti, la scrittura di un programma risulta più semplice da realizzare, ma per ottenere dei risultati soddisfacenti (leggi: velocità di aggiornamento dello schermo), occorre utilizzare un processore abbastanza potente come un 68020 o meglio ancora un 68030 dotato di fast ram.
In alternativa a questa tecnica, che taglia fuori tutti i computer Amiga dotati del buon vecchio 68000, alcuni programmatori hanno messo a punto un algoritmo chiamato chunky copper che permette di avere schermate animate con una buona fluidità e con una velocità di tutto rispetto. Sfruttando il copper (uno dei coprocessori grafici), è possibile gestire la grafica in modalità chunky, anche se questo comporta una serie di limitazioni dovute alle caratteristiche dell'hardware di Amiga. In primo luogo, la modalità chunky copper, impone una risoluzione massima dello schermo pari a 130x120 pixel, a questa limitazione (già abbastanza pesante), va aggiunto che il dettaglio grafico non può essere rappresentato con una matrice di pixel più piccola del 2x2, ed infine, i colori su schermo vengono pescati dalla vecchia palette ECS (limitata a 4096 colori) anche su macchine AGA.
Primi passi
Nel corso degli ultimi due anni, i programmatori, convinti della possibilità di realizzare un clone di Doom per Amiga ed utilizzando entrambe le tecniche sopra descritte, hanno "sfornato" diversi lavori riuscendo di molto ad avvicinarsi al gioco della ID.
Naturalmente, la maggior parte di queste demo sono soltanto dei viaggi in un labirinto dove, poter ammirare la bellezza delle texture e aprire qualche porta è il massimo dell'interazione possibile. Tuttavia, basta questo per capire se su Amiga sia possibile o meno realizzare un gioco in stile Doom. Cerchiamo di guardare più da vicino il panorama offerto dal settore PD, dove c'è stata una vera e propria proliferazione di prodotti di questo tipo.
Partiamo con Motion, una demo dei Bomb, dove si intuisce come un motore grafico ben realizzato, possa essere sfruttato per un bel gioco. La velocità di refresh dello schermo non è proprio il massimo, ma la bellezza delle texture, la presenza di scale e altri elementi in puro stile Doom, fanno ben sperare per il futuro dei Bomb.
Una nota a parte la merita BSP, una sorta di player per labirinti di Doom. Infatti, con questo programma di John Fehr, è possibile navigare all'interno del labirinto originale del gioco della ID a patto, ovviamente, di possederne la versione shareware o commerciale, dalla quale poter prelevare il file Doom.wad. Non ci sono nemici, né texture per pavimenti e soffitti, la velocità è accettabile, mentre il dettaglio è abbastanza alto.
Ben fatto è anche Poom 0.2, forse la più famosa demo per Amiga di questo genere.
Scritto da Jussi Salmi e Janne Juhola, questo è forse uno dei migliori prodotti della sua categoria. Realizzato con la tecnica chunky to planar, presenta un dettaglio grafico ben definito, 256 colori su schermo (gira solo su macchine AGA), scrolling fluido e texture molto curate presenti anche su pavimenti e soffitti. La particolarità di questa demo è la presenza di dettagli come: luci lampeggianti, tubi da cui fuoriesce vapore e colonne riflettenti. La fluidità è buona, ma la finestra di gioco è limitata in grandezza a due terzi dello schermo.
Altra demo, degna di nota, è Dentaku26 di A.J. Amsel. Realizzato con la tecnica chunky copper, presenta una finestra di gioco molto piccola (circa 1/4 dello schermo) e un basso dettaglio grafico, ma ha dalla sua parte una fluidità e velocità di aggiornamento molto alta anche su macchine base come Amiga 1200. Le texture, disegnate anche su pavimenti e soffitti, sono di buona fattura anche se potrebbero essere migliorate, ma la presenza di porte semitrasparenti, terminali e ventilatori animati, cadaveri e altri dettagli, fanno di Dentaku26 un buon prodotto, anche se siamo comunque lontani dalla qualità ottenibile sfruttando la tecnica chunky to planar.
Concludiamo questa veloce carrellata sulle demo "Doom-like" ricordando anche TextDemo5, di J. Hendricks, un prodotto sicuramente notevole dal punto di vista della velocità di scrolling anche se sono assenti le texture sui pavimenti e soffitti. E' possibile giocare a tutto schermo, ma visto che il programmatore ha utilizzato la tecnica chunky to planar, è necessario possedere almeno un 68030 per godersi la massima risoluzione di gioco. Le caratteristiche di TextDemo5 sono: muri curvi, 256 colori su schermo (sono comunque incluse le versioni ECS/OCS), presenza di sorgenti di luce occasionalmente variabili, dimensione variabile della finestra di gioco.
Non abbiamo volutamente parlato di tutti i cloni di Doom nati su Amiga perché, probabilmente, ci sarebbe voluta l'intera rivista. Abbiamo trattato, invece, i più significativi per darvi un'idea del fervore che ha animato i programmatori di queste demo, convinti di poter smentire le parole della ID.
Questa e' solo una parte dell'articolo pubblicato su Enigma Amiga Run di Settembre numero 67. E' possibile ricevere l'arretrato chiamando il numero (02)38.01.00.30 tutti i giorni dalle ore 10.00 alle 12.30